 
/* 
 * Copyright (C) Ignacio Lucas
 */
 
/*
 *  logger_manager, hecho por Ignacio Lucas
 *
 *  Interfaz para acceder al log desde distintos modulos de la aplicacion.
 *  Administra 4 loggers: 1 para los workers, otro para el modulo jobs_controller, otro para el main de la aplicacion y otro para el modulo io_handler.
 *
 *  Encapsula la librería zlog (https://github.com/HardySimpson/zlog/)
 *
 *  Ignacio Lucas <ignacio.lucas@gmail.com>
 */

#include "logger.h"
#include <stdarg.h>
#include <zlog.h>

zlog_category_t *core_category = NULL;
zlog_category_t *io_category = NULL;
zlog_category_t *workers_category = NULL;
zlog_category_t *app_category = NULL;


// inicializacion del logger_manager.
int logger_init(const char *config)
{
	int rc = 0;

	rc = zlog_init(config);
	if (rc)
	{
		return rc;
	}
	core_category = zlog_get_category("core");
	io_category = zlog_get_category("io");
	workers_category = zlog_get_category("workers");
	app_category = zlog_get_category("app");

	if (! (core_category || io_category || workers_category))
	{
		fprintf(stderr, "No se encuentran configurados los loggers para core, io o workers.");
		zlog_fini();
		return 1;
	}
	return 0;
}

int logger_register_worker(char *id)
{
	zlog_put_mdc("worker_id", id);
	return 0;
}

logger_category_t logger_get_category(char *name)
{
	return (logger_category_t)zlog_get_category(name);
}

int logger_destroy()
{
	zlog_fini();
	return 0;
}

